package com.youkeda.meetingroom.service;

import com.youkeda.meetingroom.model.BookRecord;
import com.youkeda.meetingroom.model.Result;

/**
 * 预约服务
 *
 * @author awake
 */
public interface BookService {

    /**
     * 预约会议室
     *
     * @param record 会议室记录
     * @return 返回成功信息，成功预约则返回预约记录
     */
    Result book(BookRecord record);

    /**
     * 取消预约会议室
     *
     * @param record 要给定用户主键
     * @return 是否成功预约
     */
    boolean cancel(BookRecord record);

    /**
     * 检查会议室是否被预约
     *
     * @param meetingRoomId 会议室主键
     * @return 是否被预约
     */
    boolean checkBooked(String meetingRoomId);

    /**
     * 检查会议室是否被指定用户预约
     * 用于前台显示会议室状态
     *
     * @param userId        用户主键
     * @param meetingRoomId 会议室主键
     * @return
     */
    boolean isBookedByUserId(String userId, String meetingRoomId);

    /**
     * 获取预约信息
     *
     * @param record 会议室主键
     * @return 预约信息、成功信息
     */
    Result getBookInfo(BookRecord record);

    /**
     * 签到，即兑现预约
     * 需要检查明文密码
     *
     * @param userId        用户主键
     * @param meetingRoomId 会议室主键
     * @param pwd           明文密码
     * @return 成功信息
     */
    Result checkIn(String userId, String meetingRoomId, String pwd);

    /**
     * 签退
     *
     * @param userId        用户主键
     * @param meetingRoomId 会议室主键
     * @return 成功信息
     */
    Result checkOut(String userId, String meetingRoomId);

    /**
     * 获取用户的所有预约记录
     *
     * @param userId 用户主键
     * @return 预约记录列表
     */
    Result getBookRecords(String userId);


}